package cn.b.sky.mes.cm.service;

import java.util.List;

import cn.b.sky.mes.cm.model.Calendar;
import cn.b.sky.mes.cm.model.CalendarDay;
import cn.b.sky.mes.cm.model.WorkCenterCalendarDay;
import cn.b.sky.mes.cm.model.WorkUnitCalendarDay;
import cn.b.sky.mes.cm.model.condition.CalendarCondition;
import cn.b.sky.common.model.BatchJobReport;

public interface CalendarService {
  /**
   * 
   * <strong>Title : selectCalendarByCondition<br></strong>
   * <strong>Description : </strong>分页查询工厂日历<br> 
   * <strong>Create on : 2016-1-13 下午01:11:42<br></strong>
   * <p>
   * @param calendarCondition
   * @return
   * List<Calendar>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Calendar> selectCalendarByCondition(CalendarCondition calendarCondition);

  /**
   * 
   * <strong>Title : selectCalendarCount<br></strong>
   * <strong>Description : </strong>查询工厂日历条数<br> 
   * <strong>Create on : 2016-1-13 下午01:12:19<br></strong>
   * <p>
   * @param calendarCondition
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectCalendarCount(CalendarCondition calendarCondition);

  /**
   * 
   * <strong>Title : selectCalendarByCode<br></strong>
   * <strong>Description : </strong>根据编号查询日历<br> 
   * <strong>Create on : 2016-1-18 下午01:58:45<br></strong>
   * <p>
   * @param siteCode
   * @param calendarCode
   * @return
   * Calendar
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Calendar selectCalendarByCode(String siteCode, String calendarCode);

  /**
   * 
   * <strong>Title : selectCalendarDaysByCalendarCode<br></strong>
   * <strong>Description : </strong>根据日历编号查询日历明细项<br> 
   * <strong>Create on : 2016-1-18 下午01:59:58<br></strong>
   * <p>
   * @param siteCode
   * @param calendarCode
   * @return
   * List<CalendarDay>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<CalendarDay> selectCalendarDaysByCalendarCode(String siteCode, String calendarCode);

  /**
   * 
   * <strong>Title : insertCalendar<br></strong>
   * <strong>Description : </strong>新增日历<br> 
   * <strong>Create on : 2016-1-18 下午01:57:19<br></strong>
   * <p>
   * @param calendar
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertCalendar(Calendar calendar);

  /**
   * 
   * <strong>Title : updateCalendar<br></strong>
   * <strong>Description : </strong>更新日历<br> 
   * <strong>Create on : 2016-1-18 下午02:01:00<br></strong>
   * <p>
   * @param calendar
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateCalendar(Calendar calendar);

  /**
   * 
   * <strong>Title : deleteCalendar<br></strong>
   * <strong>Description : </strong>删除日历<br> 
   * <strong>Create on : 2016-1-18 下午02:01:48<br></strong>
   * <p>
   * @param siteCode
   * @param calendarCode
   * @return
   * BatchJobReport
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport deleteCalendar(String siteCode, String calendarCode);

  /**
   * 
   * <strong>Title : selectAllUnlockCalendars<br></strong>
   * <strong>Description : </strong>查询未锁定的日历<br> 
   * <strong>Create on : 2016-1-19 上午9:38:41<br></strong>
   * <p>
   * @param siteCode
   * @return
   * List<Calendar>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Calendar> selectAllUnlockCalendars(String siteCode);

  /**
   * 
   * <strong>Title : selectCalendarDaysByCalendarCodeAndPeriod<br></strong>
   * <strong>Description : </strong>根据日历编号及时间段查询日历明细项<br> 
   * <strong>Create on : 2016年1月25日 下午3:09:29<br></strong>
   * <p>
   * @param siteCode
   * @param calendarCode
   * @param startDate
   * @param endDate
   * @return
   * List<CalendarDay>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<CalendarDay> selectCalendarDaysByCalendarCodeAndPeriod(String siteCode, String calendarCode, String startDate,
      String endDate);

  /**
   * 
   * <strong>Title : selectWorkCenterCalendarDays<br></strong>
   * <strong>Description : </strong>查询（所有/指定）工作中心，指定日期范围内的工作日历<br> 
   * <strong>Create on : 2016年3月11日 下午1:24:37<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCodes
   * @param startDate
   * @param endDate
   * @return
   * List<WorkcenterCalendarDay>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkCenterCalendarDay> selectWorkCenterCalendarDays(String siteCode, String[] workCenterCodes, String startDate,
      String endDate);

  /**
   * 
   * <strong>Title : selectWorkUnitCalendarDays<br></strong>
   * <strong>Description : </strong>查询（所有/指定）作业单元，指定日期范围内的工作日历<br> 
   * <strong>Create on : 2016年3月11日 下午1:24:37<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCodes
   * @param startDate
   * @param endDate
   * @return
   * List<WorkUnitCalendarDay>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnitCalendarDay> selectWorkUnitCalendarDays(String siteCode, String[] workCenterCodes, String startDate,
      String endDate);

}
